#! /usr/bin/env python
# -*- coding: utf-8 -*-

# *************************************************************
#     Filename @  checkdoc.py
#       Author @  Huoty
#  Create date @  2014-10-24 11:09:40
#  Description @  
# *************************************************************

def deco_functionNeedDoc(func):
    if func.__doc__ == None :
        print func, "has no __doc__, it's a bad habit."
    else:
        print func, ':', func.__doc__, '.'  # 以上部分在初始化时就会被执行
    return func  # 返回func本身，所以调用func，执行的还是func本身，等于没有装饰过一样

@deco_functionNeedDoc
def f():
    print 'f() Do something'

@deco_functionNeedDoc
def g():
    'I have a __doc__'
    print 'g() Do something'

# Script starts from here

f()  # 被装饰器装饰后的执行结果取决于装饰函数的是想，
g()  # 如果装饰函数返回被装饰函数本身，就等于没有装饰，
     # 如果装饰函数对被装饰函数进行了包装，并返回包装后的函数，
     # 那调用函数时执行的就是包装过的函数
     # 本例中没有对函数进行额外的包装，只是一开始就判断函数时候有说明文档
     # 这一部分会在初始化时被执行，也就是说，不调用函数这一部分也会被执行
